/**
 * @(#)IBaseService.java Dec 10, 2009
 *   
 * Copyright  (c) 2009-2013 XLab,  Org. 
 * All  rights  reserved.   
 * TODO
 */

package org.xlab.baseframework.service.api;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import org.xlab.baseframework.domain.INormalDomain;
import org.xlab.baseframework.domain.view.IViewDomainObject;


/**
 * 基本服务接口定义,其他业务接口应当继承本接口
 * 
 * @author MaKuBEX Email:makubexnet@gmail.com
 * @version 1.0.0
 */
public interface IBaseService<V extends IViewDomainObject<? extends Serializable>, P extends INormalDomain>
		extends Serializable {

	/**
	 * 将实体类转换成视图类
	 * 
	 * @param entity
	 *            实体类
	 * @return 视图类
	 */
	public V convertToVO(P entity);

	/**
	 * 将实体类列表转换成视图类列表
	 * 
	 * @param entityCollection
	 *            实体类集合
	 * @return 视图类列表
	 */
	public List<V> convertToVOList(Collection<P> entityCollection);
	
	/**
	 * 从视图类粘贴到实体类
	 * 
	 * @param viewObject 视图类
	 * @return 实体类
	 */
	public P parseFromVO(V viewObject);
}
